Aspects of media content rendering

ABSTRACT

Media content is arranged into a number of sets of video, audio, or data samples, referred to as clips, which are rendered by a media content manager. A playlist, which is handled by a presentation manager, specifies the time-ordered sequence of clips playable to a user. Certain actions are taken during media content play to minimize glitches perceived by the user, including determining a time offset value that is used to decide how far in advance of a scheduled play time to begin pre-rendering an upcoming clip. The time offset value is determined using one or more static characteristics associated with a media source for the upcoming clip, such as the location of the media source, codec parameters, or encryption complexity, and one or more dynamic characteristics of the presentation system, such as retrieval states, (including play speeds) of media clips, processing loads, or clock frequencies.

STATEMENT OF RELATED APPLICATION

This application claims the benefit of provisional application No.60/695,944, filed Jul. 1, 2005, which is incorporated by referenceherein.

BACKGROUND

Multimedia players are devices that render combinations of video, audioor data content (“multimedia presentations”) for consumption by users.Multimedia players such as DVD players currently do not provide formuch, if any, user interactivity during play of media content—mediacontent play is generally interrupted to receive user inputs other thanplay speed adjustments. For example, a user of a DVD player mustgenerally stop the movie he is playing to return to a menu that includesoptions allowing him to select and receive features such as audiocommentary, actor biographies, or games.

Interactive multimedia players are devices (such devices may includehardware, software, firmware, or any combination thereof) that rendercombinations of interactive content concurrently with traditional video,audio or data content (“interactive multimedia presentations”).Interactive content is generally any user-selectable visible or audibleobject presentable alone or concurrently with other video, audio or datacontent. Although any type of device may be an interactive multimediaplayer, devices such as optical media players (for example, DVDplayers), computers, and other electronic devices are particularly wellpositioned to enable the creation of, and consumer demand for,commercially valuable interactive multimedia presentations because theyprovide access to large amounts of relatively inexpensive, portable datastorage.

To enhance investment in all types of media content players,particularly interactive multimedia players and interactive multimediapresentations, it is desirable to provide predictable and relativelyglitch-free play of video, audio or data content.

It will be appreciated that the claimed subject matter is not limited toimplementations that solve any or all of the disadvantages of specificmultimedia presentation systems, interactive multimedia presentationsystems, or aspects thereof.

SUMMARY

Many types of presentations, such as multimedia presentations andinteractive multimedia presentations, include media content. One exampleof media content is a movie, but media content may be video, audio,data, or any combination thereof. Media content is generally arrangedinto a number of sets of samples, referred to as clips, which arerendered by a media content manager. One clip is generally receivablefrom one media source. A playlist, which is handled by a presentationmanager, specifies the time-ordered sequence of clips that arepresentable to a user. Sometimes, a real-time transition from one clipto another as specified in the playlist is difficult to perform withoutcausing the user to experience glitches (for example, delays,undesirable interruptions, or dropped content) in the play of the mediacontent, especially when presentation systems with limited processingand/or decoding resources are used.

Methods, systems, apparatuses, and articles of manufacture for playingmedia content that are discussed herein involve pre-rendering at least aportion of an upcoming clip before the clip is scheduled for play, tominimize glitches during play of the media content. Certain actionstaken during play of the media content include determining a time offsetvalue, which is used to decide how far in advance of the scheduled playtime to begin pre-rendering the upcoming clip. There should be enoughtime for pre-rendering the clip before the scheduled play time, but theclip should not be pre-rendered so far in advance that pre-renderingactivities negatively affect other important activities occurring withinthe presentation system.

The time offset value is determined using one or more staticcharacteristics associated with the media source for the upcoming clip,and one or more dynamic characteristics of the presentation system.Examples of static characteristics of a particular media source includethe location of the media source, codec parameters or settings, orencryption parameters or settings. Examples of dynamic characteristicsof the presentation system include retrieval states (including playspeeds) of media clips, media or graphics processing loads, or media orgraphics clock frequencies. The time offset value may be determinedmultiple times during play of the media content to account for variousdynamic characteristics.

This Summary is provided to introduce a selection of concepts in asimplified form. The concepts are further described in the DetailedDescription section. Elements or steps other than those described inthis Summary are possible, and no element or step is necessarilyrequired. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended foruse as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified functional block diagram of an interactivemultimedia presentation system.

FIG. 2 is a graphical illustration of an exemplary presentationtimeline, which is ascertainable from the playlist shown in FIG. 1.

FIG. 3 is a simplified functional block diagram of an applicationassociated with the interactive multimedia presentation shown in FIG. 1.

FIG. 4 is a simplified functional block diagram illustrating the timingsignal management block of FIG. 1 in more detail.

FIG. 5 is a flowchart of a method for playing media content, such as themedia content shown in FIG. 2, using a presentation system, such as theinteractive multimedia presentation system shown in FIG. 1.

FIG. 6 is a schematic of an exemplary media timeline usable inconnection with certain aspects of the method shown in the flowchart ofFIG. 5.

FIG. 7 is a simplified functional block diagram of a general-purposecomputing unit usable in connection with aspects of the interactivemultimedia presentation system shown in FIG. 1.

FIG. 8 is a simplified function block diagram of an exemplaryconfiguration of an operating environment in which the interactivemultimedia presentation system shown in FIG. 1 may be implemented orused.

FIG. 9 is a simplified functional diagram of a client-serverarchitecture in which the interactive multimedia presentation systemshown in FIG. 1 may be implemented or used.

DETAILED DESCRIPTION

Turning to the drawings, where like numerals designate like components,FIG. 1 is a simplified functional block diagram of an interactivemultimedia presentation system (“Presentation System”) 100. PresentationSystem 100 includes a media content manager 102, an interactive content(“IC”) manager 104, a presentation manager 106, a timing signalmanagement block 108, and a mixer/renderer 110. In general, designchoices dictate how specific functions of Presentation System 100 areimplemented. Such functions may be implemented using hardware, software,or firmware, or combinations thereof.

In operation, Presentation System 100 handles interactive multimediapresentation content (“Presentation Content”) 120. Presentation Content120 includes a media content component (“media component”) 122 and aninteractive content component (“IC component”) 124. Media component 122and IC component 124 are generally, but need not be, handled as separatedata streams, by media content manager 102 and IC manager 104,respectively.

Presentation System 100 also facilitates presentation of PresentationContent 120 to a user (not shown) as played presentation 127. PlayedPresentation 127 represents the visible and/or audible informationassociated with Presentation Content 120 that is produced bymixer/renderer 110 and receivable by the user via devices such asdisplays or speakers (not shown). For discussion purposes, it is assumedthat Presentation Content 120 and played presentation 127 representhigh-definition DVD movie content, in any format. It will beappreciated, however, that Presentation Content 120 and PlayedPresentation 127 may be any type of presentation of media content nowknown or later developed.

Media component 122 represents the traditional video, audio or datacomponents of Presentation Content 120. For example, a movie generallyhas one or more versions (a version for mature audiences, and a versionfor younger audiences, for example); one or more titles 131 with one ormore chapters (not shown) associated with each title (titles arediscussed further below, in connection with presentation manager 106);one or more audio tracks (for example, the movie may be played in one ormore languages, with or without subtitles); and extra features such asdirector's commentary, additional footage, trailers, and the like. Itwill be appreciated that distinctions between titles and chapters arepurely logical distinctions. For example, a single perceived mediasegment could be part of a single title/chapter, or could be made up ofmultiple titles/chapters. It is up to the content authoring source todetermine the applicable logical distinctions. It will also beappreciated that although media component 122 is referred to as a movie,media component 122 may in fact be video, audio, data, or anycombination thereof.

Sets of media samples (for example, sets of video, audio, or datasamples) that form media component 122 are referred to as clips 123(clips 123 are shown within media component 122, media content manager102, and playlist 128). Referring to media content manager 102,information associated with clips 123 is handled by one or more mediaprocessing pipelines 159 (two media processing pipelines are shown forexemplary purposes, but any number are possible). Within a particularmedia processing pipeline 159, information associated with clips 123 isreceived from a media source 160 and demultiplexed, decoded, and/ordecrypted at a decoder block 161.

A particular media source 160 is any device, location, or data fromwhich video, audio, or data is derived or obtained. Examples of mediasources include, but are not limited to, networks, hard drives, opticalmedia, alternate physical disks, and data structures referencing storagelocations of specific video, audio, or data. In general, anycomputer-readable medium may serve as a media source (computer-readablemedia are discussed further below, in connection with FIG. 7).

Each media source 160 has one or more media source characteristics 162associated therewith. A media source characteristic is a staticparameter associated with a particular media source. Examples of suchstatic parameters include, but are not limited to: the location of themedia source; encoder-decoder pair (“codec”) parameters or settings (forexample, encoding/decoding formats or protocols such as WMV, H.264,MPEG, VC1, group of picture (“GOP”) size settings, compression ratiosettings, or quality settings); or encryption parameters or settings(for example, encryption type such as symmetric or asymmetric,encryption complexity, or encryption formats or protocols). It will beappreciated that other static parameters associated with a particularmedia source may also be defined or recognized.

Decoder blocks 161 represent any devices, techniques or steps used toretrieve renderable video, audio, or data content from informationreceived from a media source 160. Decoder blocks 161 may include codecs,demultiplexers, or decrypters, for example. Decoder blocks 161 andcomponents thereof may be implemented using hardware, software,firmware, or any combination thereof. Although a one-to-one relationshipbetween decoders and media sources is shown, it will be appreciated thatone decoder may serve multiple media sources, and vice-versa. Forexample, some commercially available DVD players include only onedecoder.

Media content data (“media data”) 132 is data associated with mediacomponent 122 that has been prepared for rendering by media contentmanager 102 and transmitted to mixer/renderer 110. Sets (for example,frames) of media data 134 generally include, for each active clip 123, arendering of a portion of the clip. The exact portion or amount of theclip rendered in a particular set of media data may be based on severalfactors, such as the characteristics of the video, audio, or datacontent of the clip, or one or more media source characteristics 162.Media content manager 102 has a dynamic media processing load based onthe identity and scheduling of the various clips comprising mediacomponent 122 and/or IC component 124 (discussed below).

Referring again to Presentation Content 120, IC component 124 includesinteractive objects 125, which are user-selectable visible or audibleobjects, optionally presentable concurrently with media component 122,along with any instructions (shown as applications 155 and discussedfurther below) for presenting the visible or audible objects.Interactive objects 125 may be static or animated. Examples ofinteractive objects include, among other things, video samples or clips,audio samples or clips, graphics, text, and combinations thereof.

Interactive objects 125 originate from one or more sources (not shown).A source is any device, location, or data from which interactive objectsare derived or obtained. Examples of sources for interactive objects 125include, but are not limited to, networks, hard drives, optical media,alternate physical disks, and data structures referencing storagelocations of specific interactive objects. Examples of formats ofinteractive objects 125 include, but are not limited to, portablenetwork graphics (“PNG”), joint photographic experts group (“JPEG”),moving picture experts group (“MPEG”), multiple-image network graphics(“MNG”), audio video interleave (“AVI”), extensible markup language(“XML”), hypertext markup language (“HTML”), extensible HTML (“XHTML”),extensible stylesheet language (“XSL”), and WAV.

Applications 155 provide the mechanism by which Presentation System 100presents interactive objects 125 to a user. Applications 155 representany signal processing method or stored instruction(s) thatelectronically control predetermined operations on data. It is assumedfor discussion purposes that IC component 124 includes threeapplications 155, which are discussed further below in connection withFIGS. 2 and 3. The first application presents, concurrently with visualaspects of the movie, certain interactive objects that provide a menuhaving multiple user-selectable items; the second application presentsone or more interactive objects that provide graphic overlays (such ascircles) that may be used to identify and/or follow one or itemsappearing in the movie (a person, a car, a building, or a product, forexample); and the third application presents a media clip such as ananimated thumbnail (referred to as a “script clip”).

Interactive content data (“IC data”) 134 is data associated with ICcomponent 124 that has been prepared for rendering by IC manager 104 andtransmitted to mixer/renderer 110. Each application has an associatedqueue (not shown), which holds one or more work items (not shown)associated with rendering the application.

Presentation manager 106, which is configured for communication withboth media content manager 104 and IC manager 102, facilitates handlingof Presentation Content 120 and presentation of played presentation 127to the user. Presentation manager 106 has access to a playlist 128.Playlist 128 includes, among other things, a time-ordered sequence ofclips 123 and applications 155 (including interactive objects 125) thatare presentable to a user. The clips 123 and applications155/interactive objects 125 may be arranged to form one or more titles131. For exemplary purposes, one title 131 is discussed herein. Playlist128 may be implemented using an extensible markup language (“XML”)document, or another data structure.

Presentation manager 106 uses playlist 128 to ascertain a presentationtimeline 130 for title 131. Conceptually, presentation timeline 130indicates the times within title 131 when specific clips 123 andapplications 155 are presentable to a user. A sample presentationtimeline 130, which illustrates exemplary relationships betweenpresentation of clips 123 and applications 155 is shown and discussed inconnection with FIG. 2. In certain circumstances, it is also useful touse playlist 128 and/or presentation timeline 130 to ascertain a mediacontent timeline (“media timeline”) 142 (an exemplary media timeline 142is discussed further below, in connection with FIG. 6).

Presentation manager 106 provides information, including but not limitedto information about presentation timeline 130, to media content manager102 and IC manager 104. Based on input from presentation manger 206,media content manager 102 prepares media data 132 for rendering, and ICmanager 104 prepares IC data 134 for rendering. In one implementation,presentation manager 106 controls media processing pipelines 159.

Timing signal management block 108 produces various timing signals 158,which are used to control the timing for preparation and production ofmedia data 132 and IC data 134 by media content manager 102 and ICmanager 104, respectively. In particular, timing signals 158 are used toachieve frame-level synchronization of media data 132 and IC data 134.Details of timing signal management block 108 and timing signals 158 arediscussed further below, in connection with FIG. 4.

Mixer/renderer renders media data 132 in a video plane (not shown), andrenders IC data 134 in a graphics plane (not shown), The graphics planeis generally, but not necessarily, overlayed onto the video plane toproduce played presentation 127 for the user.

With continuing reference to FIG. 1, FIG. 2 is a graphical illustrationof a sample presentation timeline 130 for title 131 within playlist 128.Time is shown on horizontal axis 220. Information about media component122 (clips 123 are illustrated) and IC component 124 (applications 155,which present interactive objects 125, are illustrated) is shown onvertical axis 225.

Regarding media component 122, four clips 123 are shown: a first mediaclip (“media clip 1”) 230, a second media clip (“media clip 2”) 250, athird media clip (“media clip 3”) 251, and a fourth media clip (“mediaclip 4”) 253. Media clip 1 230 is playable from zero seconds to 10seconds via media processing pipeline 1 (shown in FIG. 1), media clip 2250 is playable from eight seconds to 15 seconds via media processingpipeline 2 (also shown in FIG. 1), media clip 3 251 is playable from 10seconds to 20 seconds via media processing pipeline 1, and media clip 4253 is playable from 30 seconds to 40 seconds via media processingpipeline 2. No media content is scheduled by playlist 128 for playbetween 20 seconds and 30 seconds, although an application 155 maypresent script clip 255 for play via media processing pipeline 1 between20 seconds and 30 seconds. Script clip is a media clip, such as ananimated thumbnail, which is not generally included in the playlist, butwhich may be optionally invoked via an application at times (such aswhen no media content is scheduled for play) within played presentation127.

Regarding IC component 124, as mentioned above in connection with FIG.1, one application is responsible for presenting certain interactiveobjects that provide user-selectable items (for example, buttons withassociated text or graphics) of menu 280. Another application isresponsible for presenting one or more interactive objects that providegraphic overlay 290. As shown, menu 280 is displayed concurrently withmedia clips 1 through 4, and graphic overlay 290 is displayableconcurrently with media clip 1 230 and a portion of media clip 2. Athird application is responsible for presenting script clip 255 whenthere is no media content scheduled for presentation (as shown, scriptclip 255 is playable between 20 seconds and 30 seconds).

The particular amount of time along horizontal axis 220 in which title131 is presentable to the user is referred to as play duration 292 oftitle 131. Specific times within play duration 292 are referred to astitle times. Seven title times (“TTs”) are shown on presentationtimeline 130—TT1 293, TT2 294, TT3 295, TT4 296, TT5 297, TT6 298, andTT7 299. Because a title may be played once or may be played more thanonce (in a looping fashion, for example) play duration 292 is determinedbased on one iteration of title 131. Play duration 292 may be determinedwith respect to any desired reference, including but not limited to apredetermined play speed (for example, normal, or 1×, play speed), apredetermined frame rate, or a predetermined timing signal status. Playspeeds, frame rates, and timing signals are discussed further below, inconnection with FIG. 4.

It will be appreciated that implementation-specific factors such asdisplay techniques, and specific rules regarding play sequences andtiming relationships among clips and interactive objects for each titlemay impact upon exact values of a title's play duration and title timestherein. The terms play duration and title times are intended toencompass all such implementation-specific details.

Although title times at/within which content associated with ICcomponent 124 is presentable are generally predetermined, it will beappreciated that actions taken when the user interacts with such contentmay only be determined based on user input while Played Presentation 127is playing. For example, the user may select, activate, or deactivatecertain applications, interactive objects, and/or additional contentassociated therewith during play of Played Presentation 127.

Other times and/or durations within play duration 292 are also definedand discussed herein. Media presentation intervals 240 are defined bybeginning and ending times of play duration 292 between which particularcontent associated with particular clips 123 is playable. For example,media clip 1 230 has a presentation interval 240 defined by beginningtitle time TT1 293 and ending TT3 295, media clip 2 250 has apresentation interval 240 defined by beginning title time TT2 294 andending title time TT4 296, media clip 3 251 has a presentation interval240 defined by beginning title time TT3 295 and ending title time TT5297, media clip 4 253 has a presentation interval 240 defined bybeginning title time TT6 298 and ending title time TT7 299, and scriptclip 255 has a presentation interval 240 defined by beginning title timeTT5 297 and ending title time TT6 298.

Pre-rendering times 220 are title times (or intervals thereof) thatprecede the title times at which particular clips 123 are playable basedon presentation timeline 130 by amounts based on variable time offsetvalues (determination of time offset values and pre-rendering times 220is discussed below, in connection with FIGS. 5 and 6).

Time intervals associated with applications 155 (such as applicationpresentation intervals and application play durations) are defined anddiscussed below, in connection with FIG. 3.

With continuing reference to FIGS. 1 and 2, FIG. 3 is a functional blockdiagram of a single application 155. Application 155 is generallyrepresentative of applications responsible for presenting interactiveobjects 280, 290, and 255 (shown in FIG. 2). Application 155 includesinstructions 304 (discussed further below). Application 155 hasassociated therewith an application play duration 320 and one or moreapplication presentation intervals 321.

Application play duration 320 is a particular amount of time, withreference to an amount (a part or all) of play duration 292 within whichinteractive objects 125 associated with application 155 are presentableto and/or selectable by a recipient of played presentation 127. In thecontext of FIG. 2, for example, application 155 responsible for menu 280has an application play duration composed of the amount of time betweenTT1 293 and TT7 299. The application responsible for graphical overlay290 has an application play duration composed of the amount of timebetween TT1 293 and TT3 295. The application responsible for script clip255 has an application play duration composed of the amount of timebetween TT5 297 and TT6 298.

The intervals defined by beginning and ending title times obtained whenan application play duration 320 associated with a particularapplication is conceptualized on presentation timeline are referred toas application presentation intervals 321. For example, referring toFIG. 2, the application responsible for menu 280 has an applicationpresentation interval beginning at TT1 293 and ending at TT7 299, theapplication responsible for graphic overlay 290 has an applicationpresentation interval beginning at TT1 293 and ending at TT3 295, andthe application responsible for script clip 255 has an applicationpresentation interval beginning at TT5 297 and ending at TT6 298.

In some cases, application 155 may have more than one page (pages arenot shown). A page is a logical grouping of one or more interactiveobjects that are contemporaneously presentable within a particularapplication play duration 320 and/or application presentation interval321. Interactive objects associated with a particular page may bepresented concurrently, serially, or a combination thereof. The numberof applications and pages associated with a given title, and theinteractive objects associated with each application or page, aregenerally logical distinctions that are matters of design choice. Forexample, designation of a particular initial page is not necessary, morethan one page of an application may be presented concurrently, or anapplication may be started with no pages (or an initial page thatcontains nothing). Pages of an application may be loaded and unloadedwhile keeping the application and script in tact. Multiple pages may beused when it is desirable to manage (for example, limit) the number oramount of resources associated with an application that are loaded intomemory during execution of the application.

Instructions 304, when executed, perform tasks (among other tasks)related to rendering of interactive objects 125 associated withapplication 155, based on user input. One type of user input (or aresult thereof) is a user event. User events are actions or occurrencesinitiated by a recipient of played presentation 127 that relate to ICcomponent 124. User events are generally, but not necessarily,asynchronous. Examples of user events include, but are not limited to,user interaction with interactive objects within played presentation127, such as selection of a button within menu 280, selection of thecircle associated with graphical overlay 290, or invocation of scriptclip 255. Such interactions may occur using any type of user inputdevice now known or later developed, including a keyboard, a remotecontrol, a mouse, a stylus, or a voice command. It will be appreciatedthat application 155 may respond to events other than user events, suchas system events, document object model events, or other types ofevents.

In one implementation, instructions 304 are computer-executableinstructions encoded in computer-readable media (discussed furtherbelow, in connection with FIGS. 8 and 9). In the examples set forthherein, instructions 304 are implemented using either script 308 ormarkup elements 303. Although either script or markup elements may beused alone, in general, the combination of script and markup elementsenables the creation of a comprehensive set of interactive capabilitiesfor a high-definition DVD movie.

Script 308 includes instructions 304 written in a non-declarativeprogramming language, such as an imperative programming language. Animperative programming language describes computation in terms of asequence of commands to be performed by a processor. In most cases wherescript 308 is used, the script is used to respond to user events. Script308 is useful in other contexts, however, such as handling issues thatare not readily or efficiently implemented using markup elements alone.Examples of such contexts include handling aspects of the presentationof script clip 255, system events, state management, and resourcemanagement (for example, accessing cached or persistently storedresources). In one implementation, script 308 is ECMAScript as definedby ECMA International in the ECMA-262 specification. Common scriptingprogramming languages falling under ECMA-262 include JavaScript andJScript. In some settings, it may be desirable to implement 308 using asubset of ECMAScript 262, such as ECMA-327.

Markup elements 303 represent instructions 304 written in a declarativeprogramming language, such as Extensible Markup Language (“XML”). InXML, elements are logical units of information defined, using start-tagsand end-tags, within XML documents. XML documents are data objects thatare made up of storage units called entities (also called containers),which contain either parsed or unparsed data. Parsed data is made up ofcharacters, some of which form character data, and some of which formmarkup. Markup encodes a description of the document's storage layoutand logical structure. There is one root element in an XML document, nopart of which appears in the content of any other element. For all otherelements, the start-tags and end-tags are within the content of otherelements, nested within each other.

An XML schema is a definition of the syntax(es) of a class of XMLdocuments. Some XML schemas are defined by the World Wide Web Consortium(“W3C”). Other XML schemas have been promulgated by the DVD Forum foruse with XML documents in compliance with the DVD Specifications forHigh Definition Video, and for other uses. It will be appreciated thatother schemas for high-definition DVD movies, as well as schemas forother interactive multimedia presentations, are possible.

At a high level, an XML schema includes: (1) a global elementdeclaration, which associates an element name with an element type, and(2) a type definition, which defines attributes, sub-elements, andcharacter data for elements of that type. Attributes of an elementspecify particular properties of the element using a name/value pair,with one attribute specifying a single element property.

With continuing reference to FIGS. 1-3, FIG. 4 is a simplifiedfunctional block diagram illustrating various components of timingsignal management block 108 and timing signals 158 in more detail.

Timing signal management block 108 is responsible for the handling ofclocks and/or timing signals that are used to determine specific timesor time durations within Presentation System 100. As shown, a continuoustiming signal 401 is produced at a predetermined rate by a clock source402. Clock source 402 may be a clock associated with a processingsystem, such as a general-purpose computer or a special-purposeelectronic device. Timing signal 401 produced by clock source 402generally changes continually as a real-world clock would—within onesecond of real time, clock source 402 produces, at a predetermined rate,one second worth of timing signals 401.

Timing signal 401 is input to IC frame rate calculator 404, media framerate calculator 406, time reference calculator 408, and time referencecalculator 490. IC frame rate calculator 404 produces a timing signal405 based on timing signal 401. Timing signal 405 is referred to as an“IC frame rate,” which represents the rate at which frames of IC data134 are produced by IC manager 104. One exemplary value of the IC framerate is 30 frames per second. The frequency of IC frame rate 405(referred to as the “presentation clock frequency”) may dynamicallychange, however. It will also be appreciated that the processing loadwithin various components of Presentation System 100 may change based onthe presentation clock frequency. IC frame rate calculator 404 mayreduce or increase the rate of timing signal 401 to produce timingsignal 405.

Frames of IC data 134 generally include, for each valid application 155and/or page thereof, a rendering of each interactive object 125associated with the valid application and/or page in accordance withrelevant user events. For exemplary purposes, a valid application is onethat has an application presentation interval 321 within which thecurrent title time of play duration 292 falls, based on presentationtimeline 130. It will be appreciated that an application may have morethan one application presentation interval. It will also be appreciatedthat no specific distinctions are made herein about an application'sstate based on user input or resource availability.

Media frame rate calculator 406 also produces a timing signal—timingsignal 407—based on timing signal 401. Timing signal 407 is referred toas a “media frame rate,” which represents the rate at which frames ofmedia data 132 are produced by media content manager 102. The mediaframe rate may be the same as, or different from, IC frame rate 405. Oneexemplary value of the media frame rate is 24 frames per second. Thefrequency of media frame rate 407 may dynamically change, however, mediaframe rate calculator 406 may reduce or increase the rate of timingsignal 401 to produce timing signal 407.

A clock source 470 produces timing signal 471, which governs the rate atwhich information associated with clips 123 is produced from mediasources 161. Clock source 470 may be the same clock as clock 402, orbased on the same clock as clock source 402. Alternatively, clocks 470and 402 may be altogether different, and/or have different sources.Likewise, media frame rate 407 may be the same as, or based on the samevalue as, timing signal 471, or the timing signals may be different.

Clock source 470 adjusts the rate of timing signal 471 (which isreferred to as the “media clock frequency”) based on a media stateindicator signal 481, which is produced by media state indicator block480. Media state indicator signal 481 represents a particular retrievalstate of video, audio, or data information from a particular mediasource 160 (shown in FIG. 1). Such retrieval states may be directly orindirectly based on user input, or on the content of playlist 128 (alsoshown in FIG. 1). The media clock frequency may also vary based on mediasource characteristics 162 such as encoding or decoding rates. Thus, themedia clock frequency may change from clip to clip.

Certain user input changes the play speed of played presentation 127,and thus the speed of retrieval of video, audio, or data informationfrom a particular media source 160. For example, played presentation 127may proceed in a forward direction at a normal speed, and may alsoproceed in both forward and reverse directions at speeds faster orslower than the normal speed. It will appreciated that normal speed is arelative term, and that normal speed may vary from presentation topresentation, and from clip to clip.

Retrieval states of video, audio, or data information from a particularmedia source may be defined based on various play speeds of playedpresentation 127. For example, a normal play retrieval state is definedto occur when played presentation 127 proceeds in a forward direction atnormal speed. A slow-forward retrieval state is defined to occur whenplayed presentation 127 proceeds in a forward direction but slower thanin real time. A fast-forward retrieval state is defined to occur whenplayed presentation 127 proceeds in a forward direction but faster thanin real time. A slow-reverse retrieval state is defined to occur whenplayed presentation 127 proceeds in a reverse direction but slower thanin real time. A fast-reverse retrieval state is defined to occur whenplayed presentation 127 proceeds in a reverse direction but faster thanin real time.

During fast-reverse and fast-forward retrieval states, the playing ofcertain media content is often skipped. Other user input may cause theplaying of certain content to be skipped, such as when the user jumpsfrom one part of the movie to another (by making selections frominteractive menus such as menu 280, for example). The user may alsostart and stop the movie at various places and at various times.

Retrieval states associated with locating and/or beginning to playvideo, audio, or data information associated with a particular clip 123from a particular media source 160 may also be defined. For example, aclosed state is defined to occur before video, audio, or datainformation associated with a particular clip 123 has been read from aparticular media source 160. A ready state is defined to occur when afirst group of samples of video, audio, or data information from aparticular media source 160 has been decoded and is ready to berendered. A pre-rolling state is defined to occur between the closedstate and the ready state, when steps are being taken to prepare thefirst group of samples of video, audio, or data information from aparticular media source 160 for rendering. Such steps include, but arenot limited to, reading information from a particular media source 160,and demulitplexing, decoding and/or decrypting the information. It willbe understood that the first group of samples of information from aparticular media source is not necessarily the first group of samplesoccurring within a particular clip 123, and that how a first group ofsamples is defined may vary from presentation to presentation, based onfactors such as encoding or encryption formats or protocols.

Elapsed clip play times 452 represent the amounts of time that haveelapsed within particular presentation intervals 240 associated withactive clips 123. For purposes of discussion herein, an active clip isone that has a presentation interval 240 (shown in FIG. 2) within whichthe current title time of play duration 292 falls, based on presentationtimeline 130. Time reference calculator 454 receives time references 452and produces a media time reference 455. Media time reference 455represents the total amount of play duration 292 that has elapsed basedon one or more time references 452. In general, when two or more clipsare playing concurrently, only one time reference 452 is used to producemedia time reference 455. The particular clip used to determine mediatime reference 455, and how media time reference 455 is determined basedon multiple clips, is a matter of implementation preference.

Time reference calculator 408 receives timing signal 401, media timereference 455, and media state indicator signal 481, and produces atitle time reference 409. Title time reference 409 represents the totalamount of time that has elapsed within play duration 292 based on one ormore of the inputs to time reference calculator 408.

Time reference calculator 490 receives timing signal 401 and title timereference 409, and produces application time reference(s) 492 and pagetime reference(s) 494. A single application time reference 492represents an amount of elapsed time of a particular application playduration 320 (shown and discussed in connection with FIG. 3), withreference to continuous timing signal 401. Application time reference492 is determined when title time reference 409 indicates that thecurrent title time falls within application presentation interval 321 ofthe particular application. Application time reference 492 re-sets (forexample, becomes inactive or starts over) at the completion ofapplication presentation interval 321. Application time reference 492may also re-set in other circumstances, such as in response to userevents, or when trick play occurs.

Page time reference 494 represents an amount of elapsed time within aplay duration for a particular page of an application, with reference tocontinuous timing signal 401. Page time reference 494 for a particularpage of an application is determined when title time reference 409indicates that the current title time falls within an applicable pagepresentation interval (not shown). Page presentation intervals aresub-intervals of application presentation intervals 321 (shown in FIG.3). Page time reference(s) 494 may re-set at the completion of theapplicable page presentation interval(s) (not shown). Page timereference 494 may also re-set in other circumstances, such as inresponse to user events, or when trick play occurs. It will beappreciated that interactive object presentation intervals, which may besub-intervals of application presentation intervals 321 and/or pagepresentation intervals, are also definable.

Table 1 illustrates exemplary occurrences during play of playedpresentation 127 by Presentation System 100, and the effects of suchoccurrences on application time reference 492, page time reference 494,title time reference 409, and media time reference 455.

TABLE 1 Application Page Time Title Time Media Time Occurrence Time 492494 409 455 Movie starts Inactive Inactive Starts (e.g., Starts (e.g.,at unless/until unless/until at zero) zero) application applicable isvalid page is valid Next clip Inactive Inactive Determined Re-sets/starts unless/until unless/until based on re-starts applicationapplicable previous title is valid page is valid time and elapsed clipplay time Next title Inactive Inactive Re-sets/ Re-sets/ startsunless/until unless/until re-starts re-starts application applicable isvalid page is valid Application Starts Starts when Continues/noContinues/no becomes applicable effect effect valid page is valid TrickPlay Re-sets/re- Re-sets/re- Based on Advances or starts if starts ifjumped-to retreats to applicable applicable location, time applicationpage is valid advances or corresponding is valid at at the titleretreats to to elapsed clip the title time time jumped time play time(s)of jumped to; to; otherwise correspond- active clip(s) otherwise becomesing to at the jumped- becomes inactive elapsed play to location inactiveduration on within the presentation title timeline Change playContinues/no Continues/no Elapses N Elapses N speed times effect effecttimes faster times faster N Movie Continues/no Continues/no PausesPauses pauses effect effect Movie Continues/no Continues/no ResumesResumes resumes effect effect

Having access to various timelines, clock sources, timing signals, andtiming signal references enhances the ability of Presentation System 100to achieve frame-level synchronization of IC data 124 and media data 132within played presentation 127, and to prioritize the glitch-freepresentation of the clips that comprise media component 122.

With continuing reference to FIGS. 1-4, FIG. 5 is a flowchart of onemethod for enhancing the ability of a presentation system, such asPresentation System 100, to present the media content of a particularpresentation, such as clips 123 shown on presentation timeline 130 ofFIG. 2, in a glitch-free manner.

The method begins at block 500, and continues at block 502, where, at afirst time, playing of a first set of media samples from a first mediasource commences. Next, at block 504, a second set of media samples,playable at a second time from a second media source, is identified. Astatic characteristic of the second media source is ascertained, atblock 506. A dynamic characteristic of the presentation system is alsoascertained, at block 508. Next, at block 510, a time offset value isdetermined based on the static and dynamic characteristics. Finally, atblock 512, the second set of media samples is pre-rendered at a timethat is based on the time offset value.

For exemplary purposes, the method of the flowchart of FIG. 5 isdiscussed in the context of Presentation System 100, particularly withreference to media component 122 and applications 155 presentable to auser in accordance with presentation timeline 130 (shown in FIG. 2).

Referring to FIG. 2, it is desirable to ensure the glitch-free play ofmedia clip 1 230, media clip 2 250, media clip 3 251, media clip 4 253,and to maximize the play time of script clip 255, in an environmentwhere processing and decoding resources are limited. In oneimplementation, Presentation System 100 has one central processing unit,one graphics processing unit, and one decoder, although otherarrangements are possible. It is therefore desirable that the readyretrieval state (represented by media state indicator signal 481, shownand discussed in connection with FIG. 4) for at least a portion of eachclip be reached at or before the title time at which the clip isscheduled for presentation on presentation timeline 130. In this regard,it is important to leave adequate time for completing the pre-rollingretrieval state (also discussed in connection with FIG. 4), but it isalso important to minimize undue negative effects on other importantactivities occurring within the presentation system, such as the playingof script clip 255 or other clips. Pre-rendering activities occurringwithin the pre-rolling retrieval state for a particular clip may resultin another clip being stopped. One way in which undue negative effectscan be minimized is by completing the pre-rolling retrieval state closeto or at the title time at which the clip is scheduled for presentation.

In one instance, it is desirable to reach the ready state for at least aportion of media clip 3 251 at or before TT3 295, which is the time atwhich a transition occurs between the playing media clip 1 230 via mediapipeline 1 and the playing of media clip 3 251 via media pipeline 2.Because the transition at TT3 295 occurs while media clip 2 250 isplaying via media pipeline 1 (and thus there is an existing mediaprocessing load), waiting until at or too close to TT3 295 to enter thepre-rolling retrieval state for a portion of media clip 3 251 couldresult in the user experiencing a glitch at TT3. For example, if videois scheduled for play at TT3, the video may pause for a few seconds, orsome video may be dropped; if audio is scheduled for play at TT3, theremay be silence for a few seconds, or some audio may be dropped. Glitchesmay occur with respect to play of media clip 2 250, media clip 3 251, orboth media clip 2 250 and media clip 3 251.

In another instance, it is desirable to reach the ready state for atleast a portion of media clip 4 253, which is played via media pipeline2, at or before TT6 298. Because the transition at TT6 298 occurs whilescript clip 255 is playing via media pipeline 1, waiting until at or tooclose to TT6 298 to enter the pre-rolling retrieval state for a portionof media clip 4 253 could result in the user experiencing a glitch atTT6. Entering the pre-rolling retrieval state for a portion of mediaclip 4 253 too soon, however, could have the undesirable effect ofreducing the play time of script clip 255.

Accordingly, it is desirable to determine pre-rendering times 220 for atleast portions of media clip 3 251 and media clip 4 253. When play ofPresentation Content 120/played presentation 127 is occurring in aforward direction, the pre-rendering time for media clip 3 251 occursprior to TT3 295, and the pre-rendering time 220 for media clip 4 253occurs prior to TT6 298. It will be appreciated that pre-rendering timesmay also be provided for play that occurs in a reverse direction.

Pre-rendering times 220 are generally determined based on a time offsetvalue, which is calculated one or more times during play of thepreceding clip or clips. In one implementation, one or more stepsassociated with determining the time offset value may be performed whenplay of the preceding clip(s) commences, and one or more steps may berepeated at other times during play of the preceding clip(s), as thetime for rendering the next clip approaches (but before thepre-rendering time is reached).

One aspect of the time offset value is determined by ascertaining one ormore media source characteristics 162 (shown in FIG. 1) of the mediasource 160 from which the subsequently playable clip is receivable.Media source characteristics 162 such as the location of the mediasource, codec parameters or settings (such as encoding or decodingformats or protocols, GOP size settings, compression settings, orquality settings), or encryption parameters or settings (such asencryption types, formats, or protocols) affect the processing ordecoding resources (and thus the time) needed to complete thepre-rolling retrieval state for a particular clip or portion thereof.The size of the portion of the clip to be decoded is also a staticcharacteristic that may affect the time needed to complete thepre-rolling retrieval state.

In the instances of determining pre-rendering times for portions ofmedia clip 3 251 and media clip 4 253, one or more media sourcecharacteristics 162 of media source 1 and media source 2, respectively,are ascertained. In one implementation, one or more media sourcecharacteristics 162 of media source 1 are stored in a data structuresuch as a table. One or more media source characteristics 162 of mediasource 2 are also stored in a data structure such as a table. The datastructures storing media source characteristics of media source 1 andmedia source 2 may be the same data structures or different datastructures. The data structure(s) are accessed or stored by mediacontent manager 102 and communicated to presentation manager 106. Mediacontent manager 102 may communicate the data structures themselves, ortime offset values having initial, or default, values based on the datastructures. Alternatively, presentation manager 106 (or anothercomponent of Presentation System 100) accesses the media sourcecharacteristic(s) and/or the data structure(s) directly, and determinesinitial time offset values.

A second aspect of the time offset value is determined by ascertainingone or more dynamic characteristics of Presentation System 100. Dynamiccharacteristics represent conditions affecting processing or decodingoperations that may change during operation of Presentation System 100.Examples of dynamic characteristics include, but are not limited to, themedia clock frequency, the presentation clock frequency, the mediaprocessing load, the general processing load, and the value(s) of mediastate indicator signal 481.

In the instances of determining pre-rendering times for portions ofmedia clip 3 251 and media clip 4 253, one or more dynamiccharacteristics of Presentation System 100 could affect (for example,increase) the initial time offset value(s) established with reference tothe static characteristic(s) of a particular media source. In general,when the processing or decoding load within Presentation System 100 ishigh, more time is required to complete the pre-rolling retrieval state,and the time offset value is increased.

The processing and/or decoding load is increased in various situations,such as when the media processing load is increased (for example,multiple clips are playing concurrently and/or the media clock frequencyis high), when the graphics processing load is increased (for example,the presentation clock frequency is high), when the general processingload is increased (for example, other programs, such as anti-virusprograms, are running concurrently), and when media state indicatorsignal 481 indicates a retrieval state that is other than the normalplay retrieval state (for example, played presentation is proceeding inthe forward or reverse direction at speeds faster or slower than thenormal speed).

Receiving user input that affects the play speed of media component 122(such as trick play, pausing, slow-forwarding, fast-forwarding,slow-reversing, or fast-reversing) can exacerbate the problem ofpresenting media component 122 in a glitch-free manner, because moreprocessing and decoding resources are used to predict and preparecertain portions of active clips from media source(s) 160 during timeswhen the play speed of media component 122 is affected than when mediacomponent 122 proceeds at normal speed.

FIG. 6 is a schematic of an exemplary media timeline 142 (with referenceto media frame rate 407), which illustrates certain processing stepsassociated with playing media content 122 at speeds other than normalspeed in the forward direction. Various frame number presentation times602 are indicated on media timeline 142. Frame number presentation times602 represent times within play duration 292 (shown in FIG. 2) at whichindividual numbered sets of media data 132 are presentable. As shown,frame number presentation times 602 occur at a rate based on media framerate 407, which also defines the duration of periodic media timeintervals 604 between frame number presentation times 602. Note that itis not necessary for media frame rate 407 to be the same as the framerate at which a particular clip 123 was encoded, although the mediaclock frequency may change based on the encoding frame rate for aparticular clip. IC frame rate 405 (not shown) is assumed to be 30frames per second (although the presentation clock frequency may alsochange dynamically).

A current elapsed play time 608 of play duration 292 is shown on mediatimeline 142. Current elapsed play time 608 may be the current value oftitle time 409, for example. A next presentable frame numberpresentation time 614 is also shown. Next presentable frame numberpresentation time 614 represents the frame number presentation time 602associated with the next frame number (after the frame number associatedwith current elapsed play time 709/title time 409) that is presentableto a user. It will be appreciated that the next presentable frame numbermay be the next consecutive frame number based on playlist 128, or maybe a frame number one or more frame number presentation times 602 awayfrom the frame number associated with current elapsed play time 608.During normal play speed, subsequent IC presentation time 712 isselected by adding an amount based on IC frame rate 407 to current ICpresentation time 710.

When media state indicator signal 481 indicates that a play state isother than normal play speed (for example, fast-forward orfast-reverse), however, one way to ascertain next presentable framenumber time 614 is to predict an amount of elapsed time 620 of playduration 292 (in addition to current elapsed play time 608/title time409) that has passed based on the play speed and media frame rate 407.

In one implementation, the predicted amount of elapsed time 620 iscalculated by estimating how many predicted frame number presentationtimes 602 on media timeline 142 have passed since presentation of mediacontent at current elapsed play time 608/title time 409. For example,the predicted amount of elapsed time 620 may be calculated by adding amultiplier value to current elapsed play time 608. The multiplier valueis obtained by multiplying a play speed factor (which may be a positiveor a negative number, depending on the direction of the play speedchange), by a frame rate factor. The play speed factor is obtained bydividing a value representing the play speed by media frame rate 407.The frame rate factor is obtained by dividing media frame rate 407 by ICframe rate 405.

Then, the predicted amount of elapsed time 620 is used to locate theparticular frame number presentation time 602 that will be the nextpresentable frame number presentation time 614. Often, at various playspeeds, patterns can be observed between the predicted amount of elapsedtime 620 (and frame number presentation times 602 corresponding thereto)and corresponding next presentable frame number presentation times 614.Recognizing such patterns may reduce the need to perform calculations ateach frame number presentation time 602. The patterns can be representedin predetermined tables or other data structures, which can be used tolook up next frame number presentation times 614 based on particularframe number presentation times 602. Using predetermined data structuresor tables in this manner, rendering of certain frames and otheradjustments may be skipped. In addition, multiple media timelines may beprocessed concurrently (in an instance where more than one clip isplaying, for example).

Referring again to the flowchart of FIG. 5, it can be seen thataccurately accounting for one or more dynamic characteristics ofPresentation System 100 assists in determination of time offset values(and thus pre-rendering times 220) that allow the pre-rolling and readyretrieval states for upcoming media clips to be completed at or aroundthe times the media clips are scheduled for play. In the instances ofdetermining pre-rendering times for portions of media clip 3 251 andmedia clip 4 253, the time offset value could be increased in thepresence of one or more dynamic characteristics, such as thepresentation clock frequency, the media clock frequency, or the currentretrieval state indicated by media state indicator signal 481, toprovide more time for completing pre-rolling retrieval states.

In one implementation, the time offset value used for determiningpre-rendering time 220 for a particular clip is arrived at vianegotiation between presentation manager 106 and media content manager102. Presentation manager 106 starts with the initial, or default, timeoffset value determined with reference to one or more staticcharacteristics of the media source of the upcoming clip (which in oneimplementation is received or ascertainable from media content manager102 via one or more data structures such as tables). Then, presentationmanager 106 adjusts the initial time offset value (one or more timesduring play of the current clip(s)) based on one or more dynamiccharacteristics. The adjusted time offset value is communicated to mediacontent manager 102, which further adjusts the time offset value basedon the current media processing load, and communicates the furtheradjusted time offset value to presentation manager 106. Then,presentation manager 106 instructs media content manager 102 to placethe upcoming clip into the pre-rolling retrieval state at a particularpre-rendering time 220 based on the further adjusted time offset value.Other implementations are also possible. In one alternativeimplementation, if media content manger 102 has knowledge of theupcoming clip(s), media content manager 102 could determine thepre-rendering time directly. In another alternative implementation, asingle component of Presentation System 100 could determine the timeoffset values and/or the pre-rendering times.

The process(es) illustrated in FIG. 5 may be implemented in one or moregeneral, multi-purpose, or single-purpose processors, such as processor702 discussed below in connection with FIG. 7. Unless specificallystated, the methods described herein are not constrained to a particularorder or sequence. In addition, some of the described method or elementsthereof can occur or be performed concurrently.

FIG. 7 is a block diagram of a general-purpose computing unit 700,illustrating certain functional components that may be used toimplement, may be accessed by, or may be included in, various functionalcomponents of Presentation System 100. One or more components ofcomputing unit 700 may be used to implement, be accessible by, or beincluded in, IC manager 104, presentation manager 106, and media contentmanager 102. For example, one or more components of FIG. 7 may bepackaged together or separately to implement functions of PresentationSystem 100 (in whole or in part) in a variety of ways.

A processor 702 is responsive to computer-readable media 704 and tocomputer programs 706. Processor 702, which may be a real or a virtualprocessor, controls functions of an electronic device by executingcomputer-executable instructions. Processor 702 may execute instructionsat the assembly, compiled, or machine-level to perform a particularprocess. Such instructions may be created using source code or any otherknown computer program design tool.

Computer-readable media 704 represent any number and combination oflocal or remote devices, in any form, now known or later developed,capable of recording, storing, or transmitting computer-readable data,such as the instructions executable by processor 702. In particular,computer-readable media 704 may be, or may include, a semiconductormemory (such as a read only memory (“ROM”), any type of programmable ROM(“PROM”), a random access memory (“RAM”), or a flash memory, forexample); a magnetic storage device (such as a floppy disk drive, a harddisk drive, a magnetic drum, a magnetic tape, or a magneto-opticaldisk); an optical storage device (such as any type of compact disk ordigital versatile disk); a bubble memory; a cache memory; a core memory;a holographic memory; a memory stick; a paper tape; a punch card; or anycombination thereof. Computer-readable media 704 may also includetransmission media and data associated therewith. Examples oftransmission media/data include, but are not limited to, data embodiedin any form of wireline or wireless transmission, such as packetized ornon-packetized data carried by a modulated carrier signal.

Computer programs 706 represent any signal processing methods or storedinstructions that electronically control predetermined operations ondata. In general, computer programs 706 are computer-executableinstructions implemented as software components according to well-knownpractices for component-based software development, and encoded incomputer-readable media (such as computer-readable media 704). Computerprograms may be combined or distributed in various ways.

Functions/components described in the context of Presentation System 100are not limited to implementation by any specific embodiments ofcomputer programs. Rather, functions are processes that convey ortransform data, and may generally be implemented by, or executed in,hardware, software, firmware, or any combination thereof, located at, oraccessed by, any combination of functional elements of PresentationSystem 100.

With continued reference to FIG. 7, FIG. 8 is a block diagram of anexemplary configuration of an operating environment 800 in which all orpart of Presentation System 100 may be implemented or used. Operatingenvironment 800 is generally indicative of a wide variety ofgeneral-purpose or special-purpose computing environments. Operatingenvironment 800 is only one example of a suitable operating environmentand is not intended to suggest any limitation as to the scope of use orfunctionality of the system(s) and methods described herein. Forexample, operating environment 800 may be a type of computer, such as apersonal computer, a workstation, a server, a portable device, a laptop,a tablet, or any other type of electronic device, such as an opticalmedia player or another type of media player, now known or laterdeveloped, or any aspect thereof. Operating environment 800 may also bea distributed computing network or a Web service, for example. Aspecific example of operating environment 800 is an environment, such asa DVD player or an operating system associated therewith, whichfacilitates playing high-definition DVD movies.

As shown, operating environment 800 includes or accesses components ofcomputing unit 700, including processor 702, computer-readable media704, and computer programs 706. Storage 804 includes additional ordifferent computer-readable media associated specifically with operatingenvironment 800, such as an optical disc, which is handled by opticaldisc drive 806. One or more internal buses 920, which are well-known andwidely available elements, may be used to carry data, addresses, controlsignals and other information within, to, or from computing environment800 or elements thereof.

Input interface(s) 808 provide input to computing environment 800. Inputmay be collected using any type of now known or later-developedinterface, such as a user interface. User interfaces may be touch-inputdevices such as remote controls, displays, mice, pens, styluses,trackballs, keyboards, microphones, scanning devices, and all types ofdevices that are used input data.

Output interface(s) 810 provide output from operating environment 800.Examples of output interface(s) 810 include displays, printers,speakers, drives (such as optical disc drive 806 and other disc drives),and the like.

External communication interface(s) 812 are available to enhance theability of operating environment 800 to receive information from, or totransmit information to, another entity via a communication medium suchas a channel signal, a data signal, or a computer-readable medium.External communication interface(s) 812 may be, or may include, elementssuch as cable modems, data terminal equipment, media players, datastorage devices, personal digital assistants, or any other device orcomponent/combination thereof, along with associated network supportdevices and/or software or interfaces.

FIG. 9 is a simplified functional diagram of a client-serverarchitecture 900 in connection with which the Presentation System 100 oroperating environment 900 may be used. One or more aspects ofPresentation System 100 and/or operating environment 800 may berepresented on a client-side 902 of architecture 900 or on a server-side904 of architecture 900. As shown, communication framework 903 (whichmay be any public or private network of any type, for example, wired orwireless) facilitates communication between client-side 902 andserver-side 904.

On client-side 902, one or more clients 906, which may be implemented inhardware, software, firmware, or any combination thereof, are responsiveto client data stores 908. Client data stores 908 may becomputer-readable media 704, employed to store information local toclients 906. On server-side 904, one or more servers 910 are responsiveto server data stores 912. Like client data stores 908, server datastores 912 may include one or more computer-readable media 704, employedto store information local to servers 910.

Various aspects of a presentation system that is used to presentinteractive content to a user synchronously with media content have beendescribed. It will be understood, however, that all of the describedcomponents of the presentation system need not be used, nor must thecomponents, when used, be present concurrently. Functions/componentsdescribed in the context of Presentation System 100 as being computerprograms are not limited to implementation by any specific embodimentsof computer programs. Rather, functions are processes that convey ortransform data, and may generally be implemented by, or executed in,hardware, software, firmware, or any combination thereof.

Although the subject matter herein has been described in languagespecific to structural features and/or methodological acts, it is alsoto be understood that the subject matter defined in the claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

It will further be understood that when one element is indicated asbeing responsive to another element, the elements may be directly orindirectly coupled. Connections depicted herein may be logical orphysical in practice to achieve a coupling or communicative interfacebetween elements. Connections may be implemented, among other ways, asinter-process communications among software processes, or inter-machinecommunications among networked computers.

The word “exemplary” is used herein to mean serving as an example,instance, or illustration. Any implementation or aspect thereofdescribed herein as “exemplary” is not necessarily to be constructed aspreferred or advantageous over other implementations or aspects thereof.

As it is understood that embodiments other than the specific embodimentsdescribed above may be devised without departing from the spirit andscope of the appended claims, it is intended that the scope of thesubject matter herein will be governed by the following claims.

1. A method for playing media content using a presentation system, themedia content arranged into a plurality of sets of media samples, eachset of media samples receivable from a media source, the methodcomprising: at a first time, commencing play of a first set of mediasamples received from a first media source; identifying a second set ofmedia samples receivable from a second media source, commencement ofplay of the second set of media samples scheduled at a second timeoccurring a predetermined amount of time from the first time;ascertaining a plurality of sets of static characteristics; based on anidentity of the second media source, selecting one set of staticcharacteristics from the plurality of sets of static characteristics;during play of the first set of media samples, ascertaining a dynamiccharacteristic of the presentation system; based on the selected set ofstatic characteristics and the dynamic characteristic, determining atime offset value; and pre-rendering at least a portion of the secondset of media samples at a pre-rendering time, the pre-rendering timeoffset from the second time by an amount based on the time offset value.2. The method according to claim 1, wherein the pre-rendering time isselected to maximize play of the first set of media samples and toensure that commencement of play of the second set of media samplesoccurs at the second time.
 3. The method according to claim 1, whereinthe first media source is the same as the second media source.
 4. Themethod according to claim 1, wherein the step of determining the timeoffset value occurs after the first time but before the pre-renderingtime, and wherein the step of determining the time offset value isrepeated multiple times during play of the first set of media samples.5. The method according to claim 1, further comprising the step of:adjusting the time offset value based on a processing load within thepresentation system.
 6. The method according to claim 1, wherein astatic characteristic within a set of static characteristics is selectedfrom the group comprising an encoder-decoder pair (“codec”) parameter,an encryption parameter, a size of the second set of media samples, anda location of the second media source.
 7. The method according to claim1, wherein the dynamic characteristic comprises one of: a play state ofthe media content; a processing load within the presentation system; anda frequency of a clock associated with the presentation system.
 8. Themethod according to claim 7, wherein when the dynamic characteristiccomprises a play state of the media content, the play state of the mediacontent is based on a play speed of the media content.
 9. The methodaccording to claim 8, wherein when the dynamic characteristic comprisesa play state of the media content, the play state is based on an averageof the play speed of the media content since the presentation system wasturned on.
 10. The method according to claim 1, wherein an identity ofthe first set of media samples is not ascertainable from a playlist. 11.The method according to claim 1, wherein the second time comprises oneof: coinciding with an end of a play duration of the first set of mediasamples; occurring within a play duration of the first set of mediasamples; and occurring after an end of a play duration of the first setof media samples.
 12. The method according to claim 1, wherein the firstmedia source is the same as the second media source.
 13. A system forplaying media content, the media content arranged into a plurality ofsets of media samples, each set of media samples receivable from a mediasource, the system comprising: a media content manager operable to playa first set of samples from a first media source and to play a secondset of samples from a second media source; and a presentation managerhaving access to a playlist, an identity of the first set of mediasamples not ascertainable from the playlist, the presentation managerconfigured for communication with the media content manager, thepresentation manager operable to ascertain an identity of the second setof media samples from the playlist, ascertain a static characteristicassociated with the second media source, ascertain a dynamiccharacteristic during play of the first set of media samples, determinea time offset value based on the static characteristic and the dynamiccharacteristic, and arrange for pre-rendering of at least a portion ofthe second set of media samples at a pre-rendering time, thepre-rendering time offset from the second time by an amount based on thetime offset value, wherein when the portion of the second set of mediasamples has been pre-rendered, the media content manager plays thepre-rendered portion of the second set of samples at the second time.14. The system according to claim 13, wherein the presentation managerreceives the static parameter from the media content manager.
 15. Thesystem according to claim 13, wherein the media content manager isoperable to adjust the determined time offset value based on aprocessing load of the media content manager, wherein the presentationmanager receives the adjusted time offset value from the media contentmanager, and wherein the pre-rendering time is offset from the secondtime by an amount based on the adjusted time offset value.
 16. Thesystem according to claim 13, wherein the system comprises an operatingsystem.
 17. The system according to claim 16, wherein the systemcomprises an optical disc player.
 18. The system according to claim 17,wherein the optical disc player complies with specifications for highdefinition video published by the DVD Forum.
 19. A method for playingmedia content using a presentation system, the media content arrangedinto a plurality of sets of media samples, each set of media samplesreceivable from a media source, the method comprising: at a first time,commencing play of a first set of media samples received from a firstmedia source; identifying a second set of media samples receivable froma second media source, the second media source comprising a differentdevice than the first media source, commencement of play of the secondset of media samples scheduled at a second time occurring apredetermined amount of time from the first time; ascertaining a staticcharacteristic associated with the second media source; during play ofthe first set of media samples, ascertaining a dynamic characteristic ofthe presentation system; based on the static characteristic and thedynamic characteristic, determining a time offset value; andpre-rendering at least a portion of the second set of media samples at apre-rendering time, the pre-rendering time offset from the second timeby an amount based on the time offset value.